Get an EJ analysis (residential population and environmental indicators) in or near a list of locations
Source:R/ejamit.R
ejamit.RdThis is the main function in EJAM that runs the analysis. It does essentially what the web app does, to analyze/summarize near a set of points, or in a set of polygons from a shapefile, or in a list of Census Units like Counties.
Usage
ejamit(
sitepoints = NULL,
radius = 3,
radius_donut_lower_edge = 0,
maxradius = 31.07,
avoidorphans = FALSE,
quadtree = NULL,
fips = NULL,
shapefile = NULL,
countcols = NULL,
wtdmeancols = NULL,
calculatedcols = NULL,
calctype_maxbg = NULL,
calctype_minbg = NULL,
subgroups_type = "nh",
include_ejindexes = TRUE,
calculate_ratios = TRUE,
extra_demog = TRUE,
need_proximityscore = FALSE,
infer_sitepoints = FALSE,
need_blockwt = TRUE,
thresholds = list(80, 80),
threshnames = list(c(names_ej_pctile, names_ej_state_pctile), c(names_ej_supp_pctile,
names_ej_supp_state_pctile)),
threshgroups = list("EJ-US-or-ST", "Supp-US-or-ST"),
updateProgress = NULL,
updateProgress_getblocks = NULL,
progress_all = NULL,
in_shiny = FALSE,
quiet = TRUE,
silentinteractive = FALSE,
called_by_ejamit = TRUE,
testing = FALSE,
showdrinkingwater = TRUE,
showpctowned = TRUE,
download_city_fips_bounds = TRUE,
download_noncity_fips_bounds = FALSE,
...
)Arguments
- sitepoints
data.table with columns lat, lon giving point locations of sites or facilities around which are circular buffers
- radius
in miles, defining circular buffer around a site point
- radius_donut_lower_edge
radius of lower edge of donut ring if analyzing a ring not circle
- maxradius
miles distance (max distance to check if not even 1 block point is within radius)
- avoidorphans
logical If TRUE, then where not even 1 BLOCK internal point is within radius of a SITE, it keeps looking past radius, up to maxradius, to find nearest 1 BLOCK. What EJScreen does in that case is report NA, right? So, does EJAM really need to report stats on residents presumed to be within radius, if no block centroid is within radius? Best estimate might be to report indicators from nearest block centroid which is probably almost always the one your site is sitting inside of, but ideally would adjust total count to be a fraction of blockwt based on what is area of circular buffer as fraction of area of block it is apparently inside of. Setting this to TRUE can produce unexpected results, which will not match EJScreen numbers. Note that if creating a proximity score, by contrast, you instead want to find nearest 1 SITE if none within radius of this BLOCK.
- quadtree
(a pointer to the large quadtree object) created using
indexblocks()which uses the SearchTree package. Takes about 2-5 seconds to create this each time it is needed. It can be automatically created when the package is attached via the .onAttach() function- fips
optional FIPS code vector to provide if using FIPS instead of sitepoints to specify places to analyze, such as a list of US Counties or tracts. Passed to
getblocksnearby_from_fips()- shapefile
optional. A sf shapefile object or path to .zip, .gdb, .json, .kml, etc., or folder that has a shapefiles, to analyze polygons. e.g.,
out = ejamit(shapefile = testdata("portland.json", quiet = T), radius = 0)If in RStudio you want it to interactively prompt you to pick a file, use shapefile=1 (otherwise it assumes you want to pick a latlon file).- countcols
character vector of names of variables to aggregate within a buffer using a sum of counts, like, for example, the number of people for whom a poverty ratio is known, the count of which is the exact denominator needed to correctly calculate percent low income.
- wtdmeancols
character vector of names of variables to aggregate within a buffer using population-weighted or other-weighted mean.
- calculatedcols
character vector of names of variables to aggregate within a buffer using formulas that have to be specified.
- calctype_maxbg
character vector of names of variables to aggregate within a buffer using max() of all blockgroup-level values.
- calctype_minbg
character vector of names of variables to aggregate within a buffer using min() of all blockgroup-level values.
- subgroups_type
Optional (uses default). Set this to "nh" for non-hispanic race subgroups as in Non-Hispanic White Alone, nhwa and others in names_d_subgroups_nh; "alone" for race subgroups like White Alone, wa and others in names_d_subgroups_alone; "both" for both versions. Possibly another option is "original" or "default" Alone means single race.
- include_ejindexes
whether to try to include Summary Indexes (assuming dataset is available) - passed to
doaggregate()- calculate_ratios
whether to calculate and return ratio of each indicator to US and State overall averages - passed to
doaggregate()- extra_demog
if should include more indicators from v2.2 report on language etc.
- need_proximityscore
whether to calculate proximity scores
- infer_sitepoints
set to TRUE to try to infer the lat,lon of each site around which the blocks in sites2blocks were found. lat,lon of each site will be approximated as average of nearby blocks, although a more accurate slower way would be to use reported distance of each of 3 of the furthest block points and triangulate
- need_blockwt
if fips parameter is used, passed to
getblocksnearby_from_fips()- thresholds
list of percentiles like list(80,90) passed to batch.summarize(), to be counted to report how many of each set of indicators exceed thresholds at each site. (see default)
- threshnames
list of groups of variable names (see default)
- threshgroups
list of text names of the groups (see default)
- updateProgress
progress bar function passed to
doaggregate()in shiny app- updateProgress_getblocks
progress bar function passed to
getblocksnearby()in shiny app- progress_all
progress bar from app in R shiny to run
- in_shiny
if fips parameter is used, passed to
getblocksnearby_from_fips()- quiet
Optional. passed to
getblocksnearby()andbatch.summarize(). set to TRUE to avoid message about usinggetblocks_diagnostics(), which is relevant only if a user saved the output of this function.- silentinteractive
to prevent long output showing in console in RStudio when in interactive mode, passed to
doaggregate()also. app server sets this to TRUE when callingdoaggregate()butejamit()default is to set this to FALSE when callingdoaggregate().- called_by_ejamit
Set to TRUE by
ejamit()to suppress some outputs even if ejamit(silentinteractive=F)- testing
used while testing this function, passed to
doaggregate()- showdrinkingwater
T/F whether to include drinking water indicator values or display as NA. Defaults to TRUE.
- showpctowned
T/f whether to include percent owner-occupied units indicator values or display as NA. Defaults to TRUE.
- download_city_fips_bounds
passed to
area_sqmi()- download_noncity_fips_bounds
passed to
area_sqmi()- ...
passed to
getblocksnearby()etc. such as report_progress_every_n = 0
Value
This returns a named list of results.
# To see the structure of the outputs of ejamit()
structure.of.output.list(testoutput_ejamit_10pts_1miles)
dim(testoutput_ejamit_10pts_1miles$results_summarized$keystats)
dim(testoutput_ejamit_10pts_1miles$results_summarized$rows)
dim(testoutput_ejamit_10pts_1miles$results_summarized$cols)
dim(testoutput_ejamit_10pts_1miles$results_summarized$keyindicators)results_overall a data.table with one row that provides the summary across all sites, the aggregated results for all unique residents.
results_bysite results for individual sites (buffers) - a data.table of results, one row per ejam_uniq_id (i.e., each site analyzed), one column per indicator
results_bybg_people results for each block group, to allow for showing the distribution of each indicator across everyone, including the distribution within a single residential population group, for example. This table is essential for analyzing the distribution of an indicator across all the unique residents analyzed. Not all columns from results_bysite are here, however. One row is one blockgroup that was either partly or entirely counted as being at (or in) any one or more of the analyzed sites, and the bgid can be linked to bgfips via the table blockgroupstats. All the indicators in that row are the totals or averages for the entire blockgroup, not just the portion that was counted as at/in the analyzed sites. The column bgwt records what fraction of the blockgroup was counted as being at/in the analyzed sites as a whole, which may reflect more than one blockgroup since it may be near two analyzed sites, for example.
results_summarized See
batch.summarize()documenting what is here!longnames descriptive long names for the indicators in the above outputs
count_of_blocks_near_multiple_sites additional detail
sitetype indicates if analysis used latlon, fips, or shp
formatted another tall format showing averages for all indicators
sitetype the type of analysis done: "latlon", "shp", "fips", etc.
Examples
# See examples in vignettes/ articles
# All in one step, using functions not shiny app:
out <- ejamit(testpoints_100_dt, 2)
#> Type of sites provided: latlon
#> Finding blocks nearby.
#> Aggregating at each site and overall.
#> doaggregate is predicted to take 24 seconds
#> Loading arrow datasets: bgej
#> Arrow-format datasets (blocks, etc.) are up-to-date -- locally-installed and latest-released data repository versions match.
#> looking for bgej in memory...
#> bgej is loading from local folder ...done.
#>
#> loaded bgej data because include_ejindexes = TRUE
#>
#> Output of ejamit() is a list with these elements:
#>
#> Name format rows cols vectorlength
#> 1 results_overall data.table 1 469 NA
#> 2 results_bysite data.table 100 469 NA
#> 3 results_bybg_people data.table 4039 215 NA
#> 4 longnames vector NA NA 469
#> 5 count_of_blocks_near_multiple_sites vector NA NA 1
#> 6 results_summarized vector NA NA 5
#> 7 formatted data.frame 469 2 NA
#> 8 sitetype vector NA NA 1
#>
#> Ways to view or save results of 'x <- ejamit()'
#> Overall results: ejam2barplot(x); ejam2ratios(x); ejam2table_tall(x); ejam2report(x)
#> Results by site: ejam2map(x); ejam2barplot_sites(x); ejam2tableviewer(x); ejam2excel(x); ejam2shapefile(x)
#>
# \donttest{
# Do not specify sitepoints and it will prompt you for a file,
# if in RStudio in interactive mode!
out <- ejamit(radius = 3)
#> Error in if (ext %in% c("xlsx", "xls", "csv")) { mytable = read_csv_or_xl(filepath) seems_like_fips <- FALSE if (seems_like_fips) { return("fips") } else { return("latlon") }} else if (ext %in% c("zip", "gdb", "geojson", "json", "kml", "shp")) { return("shp")} else { stop(paste0("File type not recognized: ", ext))}: argument is of length zero
# Specify facilities or sites as points for test data,
# use 1000 test facility points from the R package
testsites <- testpoints_1000
# use facility points in an excel or csv file
testsites <- latlon_from_anything(
system.file(paste0("testdata/latlon/",
"testpoints_10.xlsx"),
package = "EJAM")
)
# head(testsites)
# use facility points from a random sample of EPA-regulated facilities
testsites <- testpoints_n(1e3)
#> Loading arrow datasets: frs
#> Arrow-format datasets (blocks, etc.) are up-to-date -- locally-installed and latest-released data repository versions match.
#> looking for frs in memory...
#> frs is loading from local folder ...done.
#>
# Specify max distance from sites to look at (residents within X miles of site point)
radius <- 3.1 # miles
# Get summaries of all indicators near a set of points
out <- ejamit(testsites, radius)
#> Type of sites provided: latlon
#> Finding blocks nearby.
#> Finished finding blocks near 500 of 1000
#> Finished finding blocks near 1000 of 1000
#> Aggregating at each site and overall.
#> doaggregate is predicted to take 26 seconds
#>
Processed 51188 groups out of 62291. 82% done. Time elapsed: 3s. ETA: 0s.
Processed 62291 groups out of 62291. 100% done. Time elapsed: 3s. ETA: 0s.
#> In zone = PR for drinking indicator, the lookup table lacks percentile information, so those percentiles will be reported as NA
#>
#> Output of ejamit() is a list with these elements:
#>
#> Name format rows cols vectorlength
#> 1 results_overall data.table 1 469 NA
#> 2 results_bysite data.table 1000 469 NA
#> 3 results_bybg_people data.table 62291 215 NA
#> 4 longnames vector NA NA 469
#> 5 count_of_blocks_near_multiple_sites vector NA NA 1
#> 6 results_summarized vector NA NA 5
#> 7 formatted data.frame 469 2 NA
#> 8 sitetype vector NA NA 1
#>
#> Ways to view or save results of 'x <- ejamit()'
#> Overall results: ejam2barplot(x); ejam2ratios(x); ejam2table_tall(x); ejam2report(x)
#> Results by site: ejam2map(x); ejam2barplot_sites(x); ejam2tableviewer(x); ejam2excel(x); ejam2shapefile(x)
#>
# out <- ejamit("myfile.xlsx", 3.1)
# Shapefile examples
out2 = ejamit(shapefile = testshapes_2, radius = 0)
#> Type of sites provided: shp
#> Finding blocks whose internal points are inside each polygon.
#> Aggregating at each polygon and overall.
#>
#> Output of ejamit() is a list with these elements:
#>
#> Name format rows cols vectorlength
#> 1 results_overall data.table 1 469 NA
#> 2 results_bysite data.table 2 469 NA
#> 3 results_bybg_people data.table 3 215 NA
#> 4 longnames vector NA NA 469
#> 5 count_of_blocks_near_multiple_sites vector NA NA 1
#> 6 results_summarized vector NA NA 5
#> 7 formatted data.frame 469 2 NA
#> 8 sitetype vector NA NA 1
#>
#> Ways to view or save results of 'x <- ejamit()'
#> Overall results: ejam2barplot(x); ejam2ratios(x); ejam2table_tall(x); ejam2report(x)
#> Results by site: ejam2map(x); ejam2barplot_sites(x); ejam2tableviewer(x); ejam2excel(x); ejam2shapefile(x)
#>
out3 = ejamit(shapefile = testdata("portland.json", quiet = T), radius = 0)
#> Type of sites provided: shp
#> Reading layer `portland' from data source
#> `/Users/markcorrales/Documents/R PACKAGES/EJAM/inst/testdata/shapes/portland.json'
#> using driver `GeoJSON'
#> Simple feature collection with 98 features and 11 fields
#> Geometry type: MULTIPOLYGON
#> Dimension: XY
#> Bounding box: xmin: -122.8677 ymin: 45.43254 xmax: -122.4666 ymax: 45.65302
#> Geodetic CRS: NAD83
#> Warning: ejam_uniq_id columns was already in shp, but replacing it now!
#> Finding blocks whose internal points are inside each polygon.
#> Aggregating at each polygon and overall.
#>
#> Output of ejamit() is a list with these elements:
#>
#> Name format rows cols vectorlength
#> 1 results_overall data.table 1 469 NA
#> 2 results_bysite data.table 98 469 NA
#> 3 results_bybg_people data.table 775 215 NA
#> 4 longnames vector NA NA 469
#> 5 count_of_blocks_near_multiple_sites vector NA NA 1
#> 6 results_summarized vector NA NA 5
#> 7 formatted data.frame 469 2 NA
#> 8 sitetype vector NA NA 1
#>
#> Ways to view or save results of 'x <- ejamit()'
#> Overall results: ejam2barplot(x); ejam2ratios(x); ejam2table_tall(x); ejam2report(x)
#> Results by site: ejam2map(x); ejam2barplot_sites(x); ejam2tableviewer(x); ejam2excel(x); ejam2shapefile(x)
#>
# FIPS examples
out4 = ejamit(fips = testinput_fips_cities)
#> Type of sites provided: fips
#> Finding blocks in each FIPS Census unit.
#> Using FIPS code '27' for state 'MN'
#>
|
| | 0%
|
|= | 1%
|
|= | 2%
|
|== | 2%
|
|== | 3%
|
|== | 4%
|
|=== | 4%
|
|=== | 5%
|
|==== | 5%
|
|==== | 6%
|
|===== | 7%
|
|===== | 8%
|
|====== | 8%
|
|====== | 9%
|
|======= | 9%
|
|======= | 10%
|
|======= | 11%
|
|======== | 11%
|
|======== | 12%
|
|========= | 13%
|
|========== | 14%
|
|========== | 15%
|
|=========== | 15%
|
|=========== | 16%
|
|============ | 17%
|
|============ | 18%
|
|============= | 18%
|
|============= | 19%
|
|============== | 20%
|
|=============== | 21%
|
|=============== | 22%
|
|================ | 22%
|
|================ | 23%
|
|================= | 24%
|
|================= | 25%
|
|================== | 26%
|
|=================== | 27%
|
|=================== | 28%
|
|==================== | 28%
|
|==================== | 29%
|
|===================== | 29%
|
|===================== | 30%
|
|====================== | 31%
|
|====================== | 32%
|
|======================= | 33%
|
|======================== | 34%
|
|======================== | 35%
|
|========================= | 35%
|
|========================= | 36%
|
|========================== | 37%
|
|=========================== | 38%
|
|=========================== | 39%
|
|============================ | 40%
|
|============================= | 41%
|
|============================= | 42%
|
|============================== | 42%
|
|============================== | 43%
|
|=============================== | 44%
|
|================================ | 45%
|
|================================ | 46%
|
|================================= | 47%
|
|================================= | 48%
|
|================================== | 48%
|
|================================== | 49%
|
|=================================== | 50%
|
|==================================== | 51%
|
|==================================== | 52%
|
|===================================== | 52%
|
|===================================== | 53%
|
|====================================== | 54%
|
|====================================== | 55%
|
|======================================= | 56%
|
|======================================== | 57%
|
|========================================= | 58%
|
|========================================= | 59%
|
|========================================== | 59%
|
|========================================== | 60%
|
|========================================== | 61%
|
|=========================================== | 61%
|
|=========================================== | 62%
|
|============================================ | 63%
|
|============================================= | 64%
|
|============================================= | 65%
|
|============================================== | 65%
|
|============================================== | 66%
|
|=============================================== | 67%
|
|=============================================== | 68%
|
|================================================ | 68%
|
|================================================ | 69%
|
|================================================= | 70%
|
|================================================= | 71%
|
|================================================== | 71%
|
|================================================== | 72%
|
|=================================================== | 72%
|
|=================================================== | 73%
|
|==================================================== | 74%
|
|===================================================== | 75%
|
|===================================================== | 76%
|
|====================================================== | 77%
|
|====================================================== | 78%
|
|======================================================= | 78%
|
|======================================================= | 79%
|
|======================================================== | 80%
|
|========================================================= | 81%
|
|========================================================= | 82%
|
|========================================================== | 82%
|
|========================================================== | 83%
|
|=========================================================== | 84%
|
|=========================================================== | 85%
|
|============================================================ | 85%
|
|============================================================ | 86%
|
|============================================================= | 87%
|
|============================================================== | 88%
|
|============================================================== | 89%
|
|=============================================================== | 89%
|
|=============================================================== | 90%
|
|=============================================================== | 91%
|
|================================================================ | 91%
|
|================================================================ | 92%
|
|================================================================= | 93%
|
|================================================================== | 94%
|
|================================================================== | 95%
|
|=================================================================== | 95%
|
|=================================================================== | 96%
|
|==================================================================== | 96%
|
|==================================================================== | 97%
|
|==================================================================== | 98%
|
|===================================================================== | 98%
|
|===================================================================== | 99%
|
|======================================================================| 100%
#> Aggregating at each FIPS Census unit and overall.
#> Using FIPS code '27' for state 'MN'
#>
#> Output of ejamit() is a list with these elements:
#>
#> Name format rows cols vectorlength
#> 1 results_overall data.table 1 469 NA
#> 2 results_bysite data.table 2 469 NA
#> 3 results_bybg_people data.table 402 215 NA
#> 4 longnames vector NA NA 469
#> 5 count_of_blocks_near_multiple_sites vector NA NA 1
#> 6 results_summarized vector NA NA 5
#> 7 formatted data.frame 469 2 NA
#> 8 sitetype vector NA NA 1
#>
#> Ways to view or save results of 'x <- ejamit()'
#> Overall results: ejam2barplot(x); ejam2ratios(x); ejam2table_tall(x); ejam2report(x)
#> Results by site: ejam2map(x); ejam2barplot_sites(x); ejam2tableviewer(x); ejam2excel(x); ejam2shapefile(x)
#>
out5 = ejamit(fips = fips_counties_from_state_abbrev("DE"), radius = 0)
#> Type of sites provided: fips
#> Finding blocks in each FIPS Census unit.
#> Loading arrow datasets: blockid2fips
#> Arrow-format datasets (blocks, etc.) are up-to-date -- locally-installed and latest-released data repository versions match.
#> looking for blockid2fips in memory...
#> blockid2fips is loading from local folder ...done.
#>
#> Loading arrow datasets: bgid2fips
#> Arrow-format datasets (blocks, etc.) are up-to-date -- locally-installed and latest-released data repository versions match.
#> looking for bgid2fips in memory...
#> bgid2fips is loading from local folder ...done.
#>
#> Aggregating at each FIPS Census unit and overall.
#>
#> Output of ejamit() is a list with these elements:
#>
#> Name format rows cols vectorlength
#> 1 results_overall data.table 1 469 NA
#> 2 results_bysite data.table 3 469 NA
#> 3 results_bybg_people data.table 706 215 NA
#> 4 longnames vector NA NA 469
#> 5 count_of_blocks_near_multiple_sites vector NA NA 1
#> 6 results_summarized vector NA NA 5
#> 7 formatted data.frame 469 2 NA
#> 8 sitetype vector NA NA 1
#>
#> Ways to view or save results of 'x <- ejamit()'
#> Overall results: ejam2barplot(x); ejam2ratios(x); ejam2table_tall(x); ejam2report(x)
#> Results by site: ejam2map(x); ejam2barplot_sites(x); ejam2tableviewer(x); ejam2excel(x); ejam2shapefile(x)
#>
# View results overall
round(t(out$results_overall), 3.1)
#> Error in round(t(out$results_overall), 3.1): non-numeric argument to mathematical function
# View plots
plot_distance_by_group(results_bybg_people = out$results_bybg_people)
#> group nearest nearer ratio avg_distance_for_group
#> Demog.Ind. Demog.Index FALSE FALSE 1.016 2.07
#> Suppl Demog.Ind. Demog.Index.Supp FALSE FALSE 1.012 2.07
#> %Low-inc. pctlowinc FALSE TRUE 0.984 2.06
#> %Limited English pctlingiso FALSE TRUE 0.973 2.03
#> %Unemployed pctunemployed FALSE TRUE 0.994 2.07
#> %< High School pctlths FALSE TRUE 0.986 2.06
#> %< age 5 pctunder5 FALSE TRUE 0.998 2.08
#> %> age 64 pctover64 FALSE FALSE 1.004 2.09
#> %POC pctmin FALSE TRUE 0.989 2.07
#> %Hispanic pcthisp FALSE TRUE 0.990 2.07
#> %Black NHA pctnhba FALSE FALSE 1.004 2.09
#> %Asian NHA pctnhaa FALSE TRUE 0.991 2.07
#> %AmerIndian/AK NHA pctnhaiana TRUE TRUE 0.961 2.01
#> %Hawaiian/PI NHA pctnhnhpia FALSE TRUE 0.973 2.03
#> %Other race NHA pctnhotheralone FALSE TRUE 0.974 2.03
#> %multirace NH pctnhmulti FALSE TRUE 0.997 2.08
#> %White NHA pctnhwa FALSE FALSE 1.012 2.10
#> avg_distance_for_nongroup
#> Demog.Ind. 2.04
#> Suppl Demog.Ind. 2.05
#> %Low-inc. 2.10
#> %Limited English 2.09
#> %Unemployed 2.09
#> %< High School 2.09
#> %< age 5 2.09
#> %> age 64 2.08
#> %POC 2.10
#> %Hispanic 2.09
#> %Black NHA 2.08
#> %Asian NHA 2.09
#> %AmerIndian/AK NHA 2.09
#> %Hawaiian/PI NHA 2.09
#> %Other race NHA 2.09
#> %multirace NH 2.09
#> %White NHA 2.07
distance_by_group(out$results_bybg_people)
#> group nearest nearer ratio avg_distance_for_group
#> Demog.Ind. Demog.Index FALSE FALSE 1.016 2.07
#> Suppl Demog.Ind. Demog.Index.Supp FALSE FALSE 1.012 2.07
#> %Low-inc. pctlowinc FALSE TRUE 0.984 2.06
#> %Limited English pctlingiso FALSE TRUE 0.973 2.03
#> %Unemployed pctunemployed FALSE TRUE 0.994 2.07
#> %< High School pctlths FALSE TRUE 0.986 2.06
#> %< age 5 pctunder5 FALSE TRUE 0.998 2.08
#> %> age 64 pctover64 FALSE FALSE 1.004 2.09
#> %POC pctmin FALSE TRUE 0.989 2.07
#> %Hispanic pcthisp FALSE TRUE 0.990 2.07
#> %Black NHA pctnhba FALSE FALSE 1.004 2.09
#> %Asian NHA pctnhaa FALSE TRUE 0.991 2.07
#> %AmerIndian/AK NHA pctnhaiana TRUE TRUE 0.961 2.01
#> %Hawaiian/PI NHA pctnhnhpia FALSE TRUE 0.973 2.03
#> %Other race NHA pctnhotheralone FALSE TRUE 0.974 2.03
#> %multirace NH pctnhmulti FALSE TRUE 0.997 2.08
#> %White NHA pctnhwa FALSE FALSE 1.012 2.10
#> avg_distance_for_nongroup
#> Demog.Ind. 2.04
#> Suppl Demog.Ind. 2.05
#> %Low-inc. 2.10
#> %Limited English 2.09
#> %Unemployed 2.09
#> %< High School 2.09
#> %< age 5 2.09
#> %> age 64 2.08
#> %POC 2.10
#> %Hispanic 2.09
#> %Black NHA 2.08
#> %Asian NHA 2.09
#> %AmerIndian/AK NHA 2.09
#> %Hawaiian/PI NHA 2.09
#> %Other race NHA 2.09
#> %multirace NH 2.09
#> %White NHA 2.07
# View maps
mapfast(out$results_bysite, radius = 3.1)